package com.wlr.study.leetcode;

import java.util.Deque;
import java.util.LinkedList;
import java.util.Stack;

/**
 * 给你一个字符串数组 tokens ，表示一个根据 逆波兰表示法 表示的算术表达式。
 * <p>
 * 请你计算该表达式。返回一个表示表达式值的整数。
 *
 * @author lerong.wang
 * @version 1.0.0
 * @description
 * @date 2024/12/17 11:35
 */
public class LeetCode150 {
    public int evalRPN(String[] tokens) {
        Stack<Integer> numberQueue = new Stack<Integer>();
        for (String token : tokens) {
            if (!(token.equals("+") || token.equals("-") || token.equals("*") || token.equals("/"))) {
                numberQueue.push(Integer.parseInt(token));
            } else {
                Integer second = numberQueue.pop();
                Integer first = numberQueue.pop();
                switch (token) {
                    case "+":
                        numberQueue.push(first + second);
                        break;
                    case "-":
                        numberQueue.push(first - second);
                        break;
                    case "*":
                        numberQueue.push(first * second);
                        break;
                    case "/":
                        numberQueue.push(first / second);
                        break;
                    default:
                }

            }
        }
        return numberQueue.pop();
    }

    public static void main(String[] args) {
        LeetCode150 leetCode150 = new LeetCode150();
        String[] tokens = {"10", "6", "9", "3", "+", "-11", "*", "/", "*", "17", "+", "5", "+"};
        System.out.println(leetCode150.evalRPN(tokens));
    }
}